/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */

package fr.generali.relationclient.marketing.opt.listenomcampagne.builder;

import java.util.List;

import fr.generali.relationclient.marketing.opt.listenomcampagne.DtoCritereIdentifiant;
import fr.generali.relationclient.marketing.opt.listenomcampagne.DtoCritereNomCampagneIdentifiant;

/**
 * @author Holmes Kelly
 */
public class DtoCritereNomCampagneIdentifiantBuilder extends
                DtoCritereNomCampagneIdentifiantBuilderBase<DtoCritereNomCampagneIdentifiantBuilder> {

    /**
     * constructeur
     */
    public DtoCritereNomCampagneIdentifiantBuilder() {
        super(new DtoCritereNomCampagneIdentifiant());
    }

    /**
     * @return DtoCritereNomCampagneIdentifiantBuilder
     */
    public static DtoCritereNomCampagneIdentifiantBuilder dtoCritereNomCampagneIdentifiant() {
        return new DtoCritereNomCampagneIdentifiantBuilder();
    }

    /**
     * @return DtoCritereNomCampagneIdentifiant
     */
    public DtoCritereNomCampagneIdentifiant build() {
        return getInstance();
    }
}

/**
 * @author Holmes Kelly
 * @param <GeneratorT>
 */
class DtoCritereNomCampagneIdentifiantBuilderBase<GeneratorT extends DtoCritereNomCampagneIdentifiantBuilderBase<GeneratorT>> {

    /**
     * instance
     */
    private DtoCritereNomCampagneIdentifiant instance;

    /**
     * @param aInstance instance
     */
    protected DtoCritereNomCampagneIdentifiantBuilderBase(DtoCritereNomCampagneIdentifiant aInstance) {
        instance = aInstance;
    }

    /**
     * @return instance
     */
    protected DtoCritereNomCampagneIdentifiant getInstance() {
        return instance;
    }

    /**
     * @param aValue nom campagne
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildNomCampagne(String aValue) {
        instance.setNomCampagne(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param aValue id intermediaire
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildIdIntermediaire(String aValue) {
        instance.setIdIntermediaire(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param listeDtoCritereIdentifiants liste DtoCritereIdentifiant
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildListeObjectifCampagne(List<DtoCritereIdentifiant> listeDtoCritereIdentifiants) {
        instance.getListeObjectifCampagne().addAll(listeDtoCritereIdentifiants);

        return (GeneratorT ) this;
    }

    /**
     * @param listeDtoCritereIdentifiants liste DtoCritereIdentifiant
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildListeCibleProduit(List<DtoCritereIdentifiant> listeDtoCritereIdentifiants) {
        instance.getListeCibleProduit().addAll(listeDtoCritereIdentifiants);

        return (GeneratorT ) this;
    }

    /**
     * @param listeDtoCritereIdentifiants liste DtoCritereIdentifiant
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildListeStatutCampagne(List<DtoCritereIdentifiant> listeDtoCritereIdentifiants) {
        instance.getListeStatut().addAll(listeDtoCritereIdentifiants);

        return (GeneratorT ) this;
    }
}
